/*
 * 描述： <描述>
 * 修改人： rain
 * 修改时间： 2016年9月13日
 * 项目： yaxinp2p
 */
package com.rainhy.webcore.token.manager.memory;

import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.rainhy.webcore.token.context.Token;
import com.rainhy.webcore.token.context.TokenManager;


/**
 * 内存 Token 管理器
 * 
 * @author rain
 * @version [版本号, 2016年9月13日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class MemoryTokenManager implements TokenManager {
    
    private static final Map<String, Token> tokenMap = new ConcurrentHashMap<>();
    
    @Override
    public Token findToken(String tokenId) {
        return tokenMap.get(tokenId);
    }
    
    @Override
    public void persist(Token token) {
        String tokenId = token.getId();
        if (tokenMap.containsKey(tokenId)   // 存在
                && token.getLastAccessedTime() + token.getMaxInactiveInterval() < new Date().getTime()) {    // 失效
            tokenMap.remove(tokenId);
            return;
        }
        tokenMap.put(token.getId(), token);
    }
    
}
